"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/6/6 9:08
@Description : 网络通信

socket  模块    套接字
服务端   服务端对象   监听客户端的连接     接收 转发信息
客户端   客户端对象   连接服务端   发送 接收信息
"""
import socket
import threading

# 创建服务端对象    socket.AF_INET 网络通信    socket.SOCK_STREAM  tcp协议
socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置服务器参数  (ip,port)
socket_server.bind(('127.0.0.1', 9999))
# 设置服务器的最大挂起数量
socket_server.listen(2)
# 监听客户端的连接    程序阻塞    有客户端连接时 阻塞结束
# socket_client  数据通信   client_address 客户端连接地址
print('服务器启动...')


def task(socket_client, client_address):
    while True:
        # 接收客户端发送的数据
        client_message = socket_client.recv(1024).decode('utf-8')
        if client_message:
            print(f'recv {client_address} message:', client_message)
            # 发送信息到客户端
            socket_client.send(client_message.encode('utf-8'))
        else:
            break
    socket_client.close()


while True:
    socket_client, client_address = socket_server.accept()
    print('一个客户端连接了...')
    thread = threading.Thread(target=task, args=(socket_client, client_address))
    # 启动线程
    thread.start()

# # 释放资源
# socket_server.close()
